package uast.bpdex.actions.addProy;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import java.util.regex.*;
import uast.bpdex.forms.addProy;
import uast.bpdex.BaseDatos.*;
import uast.bpdex.*;
import java.sql.SQLException;


/**
 *
 *Clase utilizada para manipular las acciones sobre el formulario addProy
 */
public class addProyAction extends org.apache.struts.action.Action {

    /**
     * This is the action called from the Struts framework.
     * @param mapping The ActionMapping used to select this instance.
     * @param form The optional ActionForm bean for this request.
     * @param request The HTTP Request we are processing.
     * @param response The HTTP Response we are processing.
     * @throws java.lang.Exception
     * @return
     */
    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        String target = "failAddProy";
        String tipo ="";
        String[] valores;
        String[] actividadesTent;
        String[] productosTent;
        String[] finanzasTent;
        String[] reqFinanciera;
        String[] ejecucion;
        String[] recursos;
        String[] aportes;
        String[] solicitado;
        String id = "06-11-011";
        String nombre = "proponente1";
        String rubro = "";
        String meseleg = "";
        DataBase db;
        Proyecto proy;
        Proyectext pext;
        PlanEjecucion pe;
        PlanFinanciero pf;
        Presupuesto pre;
        int i;
        int j;
        
        actividadesTent = new String[6];
        productosTent = new String[6];
        finanzasTent = new String[6];
        reqFinanciera = new String[6];
        ejecucion = new String[6];
        recursos = new String[5];
        aportes = new String[5];
        solicitado = new String[5];
        Pattern p;
        Matcher m;
        
       
        // Se agregan todos los parametros singulares del formulario en un arreglo
        // de valores
        addProy form0 = (addProy)form;

        valores = new String[39];

        valores[0] = form0.getTlf();
        valores[1] = form0.getResp();
        valores[2] = form0.getNombProy();
        valores[3] = form0.getNombAval();
        valores[4] = form0.getResumen();
        valores[5] = form0.getMontoPropio();
        valores[6] = form0.getMontoOtros();
        valores[7] = form0.getMontoBPDEx();
        valores[8] = form0.getcTotal();
        valores[9] = form0.getObjetivo();
        valores[10] = form0.getNroProf();
        valores[11] = form0.getNroObr();
        valores[12] = form0.getNroEst();
        valores[13] = form0.getNroEmp();
        valores[14] = form0.getMuniBenef();
        valores[15] = form0.getEdoBenef();
        valores[16] = form0.getRelevancia();
        valores[17] = form0.getProduct();
        valores[18] = form0.getLSCEES();
        valores[19] = form0.getOriginal();
        valores[20] = form0.getDatosPob();
        valores[21] = form0.getNombInsti();
        valores[22] = form0.getNroInsti();
        valores[23] = form0.getAnho();
        valores[24] = form0.getComunBenef();
        valores[25] = form0.getNombMiembros();
        valores[26] = form0.getNroMiembros();
        valores[27] = form0.getMesTent();
        valores[28] = form0.getMes();
        valores[29] = form0.getAnhoTent();
        valores[30] = form0.getEval();
        valores[31] = form0.getDiaTent();
        valores[32] = form0.getDia();
        valores[33] = form0.getCapacEjec();
        valores[34] = form0.getAplic();
        valores[35] = form0.getAsoExter();
        valores[36] = form0.getBenef();
        valores[37] = form0.getAsoInter();
        valores[38] = form0.getArea();


        // Los parametros de tipo listas (para los cuadros) se agregan cada uno
        // en su respectivo arreglo
        reqFinanciera = form0.getFinanzasTent();
        ejecucion = form0.getEjecucion();
        finanzasTent = form0.getReqFinanciera();
        productosTent = form0.getProductosTent();
        recursos =form0.getRecursos();
        aportes = form0.getAportes();
        solicitado = form0.getSolicitado();
        actividadesTent = form0.getActividadesTent();
    
        db = new DataBase();

        try{
         
             //Se crea el proyecto generico y se crea un proyecto de tipo extension
             proy = new Proyecto(id,nombre,valores[2],valores[4],valores[38],valores[14],valores[15],valores[24],valores[9],valores[17],valores[25],valores[26],valores[21],valores[22],valores[5],valores[6],valores[7],valores[8],valores[36],valores[30],valores[16],valores[35],valores[33],valores[10],valores[11],valores[12],valores[13]);
             pext = new Proyectext(id,valores[3], valores[1],valores[0],valores[20],valores[34],valores[32],valores[28],valores[23],valores[31],valores[27],valores[29],valores[19],valores[37],valores[18]);
             // Se agregan en la base de datos           
             db.agregarProyecto(proy);
             db.agregarProyectext(pext);
             /* Para el cuadro de Plan Financiero, en donde el maximo de campos es 6,
              * se recorre el arreglo de actividades y si tiene contenido se crea
              * un plan financiero con los parametros necesarios
              */
             for (i = 0; i < 6; i++){
                  if (!actividadesTent[i].equals("")){
                  pf = new PlanFinanciero(id,actividadesTent[i],productosTent[i],reqFinanciera[i], ejecucion[i],finanzasTent[i]);
                  db.agregarPlanFinanciero(pf);
                  }
             } 
             
              /* Para el cuadro de Presupuesto, se coloca el rubro correspondiente
              * y se agregan los otros campos a menos que todos esten vacios
              */
              for (j=0;j<5;j++){
                  if (!(recursos[j].equals("") && aportes[j].equals("") && solicitado[j].equals(""))){
                  if (j==0)
                      rubro="honorarios";
                  if (j==1)
                     rubro = "servicios";
                  if (j==2)
                      rubro = "materiales";
                  if (j==3)
                      rubro = "viajes";
                  if (j==4)
                      rubro = "otros";
                  pre = new Presupuesto(id,rubro,recursos[j],aportes[j],solicitado[j]);
                  db.agregarPresupuesto(pre);
                  }
              }
        
              
              target = "succAddProy";
        }catch(Exception ex0){
         
           return mapping.findForward(target);
        }
        return mapping.findForward(target);
    }
}